0 CpxTRS
↳1 TrsToWeightedTrsProof (BOTH BOUNDS(ID, ID), 0 ms)
↳2 CpxWeightedTrs
↳3 TypeInferenceProof (BOTH BOUNDS(ID, ID), 0 ms)
↳4 CpxTypedWeightedTrs
↳5 CompletionProof (UPPER BOUND(ID), 0 ms)
↳6 CpxTypedWeightedCompleteTrs
↳7 NarrowingProof (BOTH BOUNDS(ID, ID), 0 ms)
↳8 CpxTypedWeightedCompleteTrs
↳9 CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID), 0 ms)
↳10 CpxRNTS
↳11 InliningProof (UPPER BOUND(ID), 112 ms)
↳12 CpxRNTS
↳13 SimplificationProof (BOTH BOUNDS(ID, ID), 0 ms)
↳14 CpxRNTS
↳15 CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID), 0 ms)
↳16 CpxRNTS
↳17 IntTrsBoundProof (UPPER BOUND(ID), 191 ms)
↳18 CpxRNTS
↳19 IntTrsBoundProof (UPPER BOUND(ID), 63 ms)
↳20 CpxRNTS
↳21 ResultPropagationProof (UPPER BOUND(ID), 0 ms)
↳22 CpxRNTS
↳23 IntTrsBoundProof (UPPER BOUND(ID), 791 ms)
↳24 CpxRNTS
↳25 IntTrsBoundProof (UPPER BOUND(ID), 292 ms)
↳26 CpxRNTS
↳27 FinalProof (⇔, 0 ms)
↳28 BOUNDS(1, n^1)
admit(x, nil) → nil
admit(x, .(u, .(v, .(w, z)))) → cond(=(sum(x, u, v), w), .(u, .(v, .(w, admit(carry(x, u, v), z)))))
cond(true, y) → y
admit(x, nil) → nil [1]
admit(x, .(u, .(v, .(w, z)))) → cond(=(sum(x, u, v), w), .(u, .(v, .(w, admit(carry(x, u, v), z))))) [1]
cond(true, y) → y [1]
admit(x, nil) → nil [1]
admit(x, .(u, .(v, .(w, z)))) → cond(=(sum(x, u, v), w), .(u, .(v, .(w, admit(carry(x, u, v), z))))) [1]
cond(true, y) → y [1]
admit :: carry → nil:. → nil:. nil :: nil:. . :: w → nil:. → nil:. w :: w cond :: =:true → nil:. → nil:. = :: sum → w → =:true sum :: carry → w → w → sum carry :: carry → w → w → carry true :: =:true |
(a) The obligation is a constructor system where every type has a constant constructor,
(b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols:
none
(c) The following functions are completely defined:
admit
cond
admit(v0, v1) → nil [0]
cond(v0, v1) → nil [0]
const, const1
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules:
The TRS has the following type information:
Rewrite Strategy: INNERMOST |
nil => 0
w => 0
true => 0
const => 0
const1 => 0
admit(z'', z1) -{ 2 }→ cond(1 + (1 + x + u + v) + 0, 1 + u + (1 + v + (1 + 0 + cond(1 + (1 + (1 + x + u + v) + u' + v') + 0, 1 + u' + (1 + v' + (1 + 0 + admit(1 + (1 + x + u + v) + u' + v', z'))))))) :|: v >= 0, x >= 0, z' >= 0, u' >= 0, v' >= 0, z'' = x, z1 = 1 + u + (1 + v + (1 + 0 + (1 + u' + (1 + v' + (1 + 0 + z'))))), u >= 0
admit(z'', z1) -{ 2 }→ cond(1 + (1 + x + u + v) + 0, 1 + u + (1 + v + (1 + 0 + 0))) :|: v >= 0, x >= 0, z1 = 1 + u + (1 + v + (1 + 0 + 0)), z'' = x, u >= 0
admit(z'', z1) -{ 1 }→ cond(1 + (1 + x + u + v) + 0, 1 + u + (1 + v + (1 + 0 + 0))) :|: v >= 0, z >= 0, x >= 0, z'' = x, z1 = 1 + u + (1 + v + (1 + 0 + z)), u >= 0
admit(z'', z1) -{ 1 }→ 0 :|: z1 = 0, x >= 0, z'' = x
admit(z'', z1) -{ 0 }→ 0 :|: z'' = v0, v0 >= 0, z1 = v1, v1 >= 0
cond(z'', z1) -{ 1 }→ y :|: z'' = 0, z1 = y, y >= 0
cond(z'', z1) -{ 0 }→ 0 :|: z'' = v0, v0 >= 0, z1 = v1, v1 >= 0
cond(z'', z1) -{ 1 }→ y :|: z'' = 0, z1 = y, y >= 0
cond(z'', z1) -{ 0 }→ 0 :|: z'' = v0, v0 >= 0, z1 = v1, v1 >= 0
admit(z'', z1) -{ 2 }→ cond(1 + (1 + x + u + v) + 0, 1 + u + (1 + v + (1 + 0 + cond(1 + (1 + (1 + x + u + v) + u' + v') + 0, 1 + u' + (1 + v' + (1 + 0 + admit(1 + (1 + x + u + v) + u' + v', z'))))))) :|: v >= 0, x >= 0, z' >= 0, u' >= 0, v' >= 0, z'' = x, z1 = 1 + u + (1 + v + (1 + 0 + (1 + u' + (1 + v' + (1 + 0 + z'))))), u >= 0
admit(z'', z1) -{ 1 }→ 0 :|: z1 = 0, x >= 0, z'' = x
admit(z'', z1) -{ 0 }→ 0 :|: z'' = v0, v0 >= 0, z1 = v1, v1 >= 0
admit(z'', z1) -{ 2 }→ 0 :|: v >= 0, x >= 0, z1 = 1 + u + (1 + v + (1 + 0 + 0)), z'' = x, u >= 0, 1 + (1 + x + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
admit(z'', z1) -{ 1 }→ 0 :|: v >= 0, z >= 0, x >= 0, z'' = x, z1 = 1 + u + (1 + v + (1 + 0 + z)), u >= 0, 1 + (1 + x + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
cond(z'', z1) -{ 1 }→ y :|: z'' = 0, z1 = y, y >= 0
cond(z'', z1) -{ 0 }→ 0 :|: z'' = v0, v0 >= 0, z1 = v1, v1 >= 0
admit(z'', z1) -{ 2 }→ cond(1 + (1 + z'' + u + v) + 0, 1 + u + (1 + v + (1 + 0 + cond(1 + (1 + (1 + z'' + u + v) + u' + v') + 0, 1 + u' + (1 + v' + (1 + 0 + admit(1 + (1 + z'' + u + v) + u' + v', z'))))))) :|: v >= 0, z'' >= 0, z' >= 0, u' >= 0, v' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + (1 + u' + (1 + v' + (1 + 0 + z'))))), u >= 0
admit(z'', z1) -{ 1 }→ 0 :|: z1 = 0, z'' >= 0
admit(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
admit(z'', z1) -{ 2 }→ 0 :|: v >= 0, z'' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + 0)), u >= 0, 1 + (1 + z'' + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
admit(z'', z1) -{ 1 }→ 0 :|: v >= 0, z >= 0, z'' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + z)), u >= 0, 1 + (1 + z'' + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
cond(z'', z1) -{ 1 }→ z1 :|: z'' = 0, z1 >= 0
cond(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
{ cond } { admit } |
admit(z'', z1) -{ 2 }→ cond(1 + (1 + z'' + u + v) + 0, 1 + u + (1 + v + (1 + 0 + cond(1 + (1 + (1 + z'' + u + v) + u' + v') + 0, 1 + u' + (1 + v' + (1 + 0 + admit(1 + (1 + z'' + u + v) + u' + v', z'))))))) :|: v >= 0, z'' >= 0, z' >= 0, u' >= 0, v' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + (1 + u' + (1 + v' + (1 + 0 + z'))))), u >= 0
admit(z'', z1) -{ 1 }→ 0 :|: z1 = 0, z'' >= 0
admit(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
admit(z'', z1) -{ 2 }→ 0 :|: v >= 0, z'' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + 0)), u >= 0, 1 + (1 + z'' + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
admit(z'', z1) -{ 1 }→ 0 :|: v >= 0, z >= 0, z'' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + z)), u >= 0, 1 + (1 + z'' + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
cond(z'', z1) -{ 1 }→ z1 :|: z'' = 0, z1 >= 0
cond(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
admit(z'', z1) -{ 2 }→ cond(1 + (1 + z'' + u + v) + 0, 1 + u + (1 + v + (1 + 0 + cond(1 + (1 + (1 + z'' + u + v) + u' + v') + 0, 1 + u' + (1 + v' + (1 + 0 + admit(1 + (1 + z'' + u + v) + u' + v', z'))))))) :|: v >= 0, z'' >= 0, z' >= 0, u' >= 0, v' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + (1 + u' + (1 + v' + (1 + 0 + z'))))), u >= 0
admit(z'', z1) -{ 1 }→ 0 :|: z1 = 0, z'' >= 0
admit(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
admit(z'', z1) -{ 2 }→ 0 :|: v >= 0, z'' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + 0)), u >= 0, 1 + (1 + z'' + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
admit(z'', z1) -{ 1 }→ 0 :|: v >= 0, z >= 0, z'' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + z)), u >= 0, 1 + (1 + z'' + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
cond(z'', z1) -{ 1 }→ z1 :|: z'' = 0, z1 >= 0
cond(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
cond: runtime: ?, size: O(n1) [z1] |
admit(z'', z1) -{ 2 }→ cond(1 + (1 + z'' + u + v) + 0, 1 + u + (1 + v + (1 + 0 + cond(1 + (1 + (1 + z'' + u + v) + u' + v') + 0, 1 + u' + (1 + v' + (1 + 0 + admit(1 + (1 + z'' + u + v) + u' + v', z'))))))) :|: v >= 0, z'' >= 0, z' >= 0, u' >= 0, v' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + (1 + u' + (1 + v' + (1 + 0 + z'))))), u >= 0
admit(z'', z1) -{ 1 }→ 0 :|: z1 = 0, z'' >= 0
admit(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
admit(z'', z1) -{ 2 }→ 0 :|: v >= 0, z'' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + 0)), u >= 0, 1 + (1 + z'' + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
admit(z'', z1) -{ 1 }→ 0 :|: v >= 0, z >= 0, z'' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + z)), u >= 0, 1 + (1 + z'' + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
cond(z'', z1) -{ 1 }→ z1 :|: z'' = 0, z1 >= 0
cond(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
cond: runtime: O(1) [1], size: O(n1) [z1] |
admit(z'', z1) -{ 2 }→ cond(1 + (1 + z'' + u + v) + 0, 1 + u + (1 + v + (1 + 0 + cond(1 + (1 + (1 + z'' + u + v) + u' + v') + 0, 1 + u' + (1 + v' + (1 + 0 + admit(1 + (1 + z'' + u + v) + u' + v', z'))))))) :|: v >= 0, z'' >= 0, z' >= 0, u' >= 0, v' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + (1 + u' + (1 + v' + (1 + 0 + z'))))), u >= 0
admit(z'', z1) -{ 1 }→ 0 :|: z1 = 0, z'' >= 0
admit(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
admit(z'', z1) -{ 2 }→ 0 :|: v >= 0, z'' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + 0)), u >= 0, 1 + (1 + z'' + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
admit(z'', z1) -{ 1 }→ 0 :|: v >= 0, z >= 0, z'' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + z)), u >= 0, 1 + (1 + z'' + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
cond(z'', z1) -{ 1 }→ z1 :|: z'' = 0, z1 >= 0
cond(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
cond: runtime: O(1) [1], size: O(n1) [z1] |
admit(z'', z1) -{ 2 }→ cond(1 + (1 + z'' + u + v) + 0, 1 + u + (1 + v + (1 + 0 + cond(1 + (1 + (1 + z'' + u + v) + u' + v') + 0, 1 + u' + (1 + v' + (1 + 0 + admit(1 + (1 + z'' + u + v) + u' + v', z'))))))) :|: v >= 0, z'' >= 0, z' >= 0, u' >= 0, v' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + (1 + u' + (1 + v' + (1 + 0 + z'))))), u >= 0
admit(z'', z1) -{ 1 }→ 0 :|: z1 = 0, z'' >= 0
admit(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
admit(z'', z1) -{ 2 }→ 0 :|: v >= 0, z'' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + 0)), u >= 0, 1 + (1 + z'' + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
admit(z'', z1) -{ 1 }→ 0 :|: v >= 0, z >= 0, z'' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + z)), u >= 0, 1 + (1 + z'' + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
cond(z'', z1) -{ 1 }→ z1 :|: z'' = 0, z1 >= 0
cond(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
cond: runtime: O(1) [1], size: O(n1) [z1] admit: runtime: ?, size: O(n1) [z1] |
admit(z'', z1) -{ 2 }→ cond(1 + (1 + z'' + u + v) + 0, 1 + u + (1 + v + (1 + 0 + cond(1 + (1 + (1 + z'' + u + v) + u' + v') + 0, 1 + u' + (1 + v' + (1 + 0 + admit(1 + (1 + z'' + u + v) + u' + v', z'))))))) :|: v >= 0, z'' >= 0, z' >= 0, u' >= 0, v' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + (1 + u' + (1 + v' + (1 + 0 + z'))))), u >= 0
admit(z'', z1) -{ 1 }→ 0 :|: z1 = 0, z'' >= 0
admit(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
admit(z'', z1) -{ 2 }→ 0 :|: v >= 0, z'' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + 0)), u >= 0, 1 + (1 + z'' + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
admit(z'', z1) -{ 1 }→ 0 :|: v >= 0, z >= 0, z'' >= 0, z1 = 1 + u + (1 + v + (1 + 0 + z)), u >= 0, 1 + (1 + z'' + u + v) + 0 = v0, v0 >= 0, 1 + u + (1 + v + (1 + 0 + 0)) = v1, v1 >= 0
cond(z'', z1) -{ 1 }→ z1 :|: z'' = 0, z1 >= 0
cond(z'', z1) -{ 0 }→ 0 :|: z'' >= 0, z1 >= 0
cond: runtime: O(1) [1], size: O(n1) [z1] admit: runtime: O(n1) [2 + 4·z1], size: O(n1) [z1] |